namespace graver.CodeAnalysis.Syntax;

/// <summary>
/// Token
/// </summary>
public sealed class SyntaxToken : SyntaxNode
{
    public SyntaxToken(SyntaxKind kind, int position, string text, object value)
    {
        Kind = kind;
        Position = position;
        Text = text;
        Value = value;
    }

    /// <summary>
    /// Token 类型
    /// </summary>
    /// <value>Token 类型</value>
    /// public override SyntaxKind Kind { get; }
    /// <summary>
    /// 位置
    /// </summary>
    /// <value>位置</value>
    public int Position { get; }

    /// <summary>
    /// 当前 Token 所在字符串
    /// </summary>
    /// <value>Token 字符串</value>
    public string Text { get; }

    /// <summary>
    /// Token 值
    /// </summary>
    /// <value>Token 值</value>
    public object Value { get; }

    public override SyntaxKind Kind { get; }


    public override IEnumerable<SyntaxNode> GetChildren()
    {
        return Enumerable.Empty<SyntaxNode>();
    }
}
